package com.comeval.logica;

import com.comeval.modelo.Factura;
import com.comeval.persistencia.IFacturaDAO;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author DianaMarcela
 */
@Stateless
public class LogicaFactura implements LogicaFacturaLocal {

    @EJB
    private IFacturaDAO facturaDAO;

    @Override
    public void registrarFactura(Factura factura) throws Exception {
        if (factura == null) {
            throw new Exception("La factura no tiene informacion");
        }
        Factura objFactura = facturaDAO.consultarPorCodigo(factura.getCodigofactura());
        if (objFactura != null) {
            throw new Exception("El codigo ya se encuentra asociado a una factura");
        }
        facturaDAO.registrarFactura(factura);
    }

    @Override
    public void modificarFactura(Factura factura) throws Exception {
        if (factura == null) {
            throw new Exception("La factura no tiene informacion");
        }
        if (factura.getCodigofactura() == null) {
            throw new Exception("El codigo de la factura es obligatorio");
        }

        Factura objFactura = facturaDAO.consultarPorCodigo(factura.getCodigofactura());
        if (objFactura == null) {
            throw new Exception("El codigo no existe para una factura");
        }
        facturaDAO.registrarFactura(factura);
    }

    @Override
    public void eliminarFactura(Factura factura) throws Exception {
        Factura objFactura = facturaDAO.consultarPorCodigo(factura.getCodigofactura());
        if (objFactura == null) {
            throw new Exception("El codigo  de la factura a eliminar no existe");
        }
        facturaDAO.eliminarFactura(objFactura);
    }

    @Override
    public List<Factura> consultarFacturas() throws Exception {
        return facturaDAO.consultarFacturas();
    }

    @Override
    public Factura consultarPorCodigo(Long codigoFactura) throws Exception {
        if (codigoFactura == null) {
            throw new Exception("Debe de ingresar un codigo");
        }
        return facturaDAO.consultarPorCodigo(codigoFactura);
    }

}
